{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c15e640d-db52-4c5d-9308-dd0619216902",
   "metadata": {},
   "source": [
    "## 5. One-Dimensional Euler Solver\n",
    "\n",
    "In Equation 62, an important step that derives $F$ with respect to $q$ is missed.\n",
    "\n",
    "$$F = \\left\\{\n",
    "\\begin{align}\n",
    "& q_2 \\\\\n",
    "& \\frac{q_2^2}{q_1} + p \\\\\n",
    "& \\frac{q_2 q_3}{q_1} + p \\frac{q_2}{q_1}\n",
    "\\end{align}\n",
    "\\right\\}\n",
    "$$\n",
    "and\n",
    "$$p = (\\gamma-1)(q_3 - \\frac{q_2^2}{2q_1})$$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "05fcd50a-4c9a-4b28-a50d-725c72b07a3e",
   "metadata": {},
   "outputs": [],
   "source": [
    "import enum\n",
    "class Primitive(enum.Enum):\n",
    "    rho, u, p = 0, 1, 2\n",
    "class Conservative(enum.Enum):\n",
    "    mass, momentum, energy = 0, 1, 2\n",
    "\n",
    "GAMMA = 1.4\n",
    "  \n",
    "def flux(q0, flux_type: Conservative):\n",
    "    p = (GAMMA - 1) * (q0[Conservative.energy.value] - 0.5 * q0[Conservative.momentum.value]**2 / q0[Conservative.mass.value])\n",
    "    if flux_type == Conservative.mass:\n",
    "        return q0[Conservative.momentum.value]\n",
    "    if flux_type == Conservative.momentum:\n",
    "        return (q0[Conservative.momentum.value]**2) / q0[Conservative.mass.value] + p\n",
    "    if flux_type == Conservative.energy:\n",
    "        return (q0[Conservative.momentum.value] * q0[Conservative.energy.value] + p * q0[Conservative.momentum.value]) / q0[Conservative.mass.value]\n",
    "\n",
    "def back_to_primitive(q0, primitive_type: Primitive):\n",
    "    if primitive_type == Primitive.rho:\n",
    "        return q0[Conservative.mass.value]\n",
    "    if primitive_type == Primitive.u:\n",
    "        return q0[Conservative.momentum.value] / q0[Conservative.mass.value]\n",
    "    if primitive_type == Primitive.p:\n",
    "        return (GAMMA - 1) * (q0[Conservative.energy.value] - 0.5 * q0[Conservative.momentum.value]**2 / q0[Conservative.mass.value])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1dca345d-3fe2-4e6f-9154-13dde6c2637f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from weno5_scheme import weno5_reconstruction\n",
    "from rk3 import rk3\n",
    "\n",
    "ghost_cells_n = 3\n",
    "\n",
    "x_l, x_r, t = 0, 1, 0.2\n",
    "nx = 200\n",
    "dt = 0.0001\n",
    "dx = (x_r - x_l) / nx\n",
    "nt = int(t / dt)\n",
    "\n",
    "x = np.linspace(dx / 2 - ghost_cells_n * dx, x_r - dx / 2 + ghost_cells_n * dx, nx +2 * ghost_cells_n)\n",
    "\n",
    "# primitive states\n",
    "u = np.zeros((nt + 1, len(Primitive), nx  + 2 * ghost_cells_n))\n",
    "for i, pos in enumerate(x):\n",
    "    u[0, Primitive.rho.value, i] = 1.0 if pos < 0.5 else 0.125\n",
    "    u[0, Primitive.u.value, i] = 0.0\n",
    "    u[0, Primitive.p.value, i] = 1.0 if pos < 0.5 else 0.1\n",
    "\n",
    "rho0, u0, p0 = u[0, Primitive.rho.value], u[0, Primitive.u.value], u[0, Primitive.p.value]\n",
    "\n",
    "q = np.zeros((nt + 1, len(Primitive), nx  + 2 * ghost_cells_n))\n",
    "\n",
    "q[0, Conservative.mass.value] = rho0\n",
    "q[0, Conservative.momentum.value] = rho0 * u0\n",
    "q[0, Conservative.energy.value] = rho0 * (p0 / (rho0 * (GAMMA - 1.0)) + 0.5 * u0**2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a73432ef-d428-43aa-a858-c62ad7ab70f6",
   "metadata": {},
   "source": [
    "### Primitive states"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3d023fe9-b4ec-40a4-874e-0a065a2f221a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAGGCAYAAACUkchWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7jklEQVR4nO3df7xsd1kf+s8z+YVAApdLkiM/IoqWULAFYsFQtaGIpGB9oZWGolcpijcarRFQCV7UIBioNeolVCvSQLiI+OuVFrDExopXNIRLMAEkqKCRQMiBiBAQkpDs7/1jzZy92Zw5e+aw115rz7zfr9e8TmbttWY/s7LPfs73me/3+1RrLQAAAAAAwBeaDB0AAAAAAACMlSI6AAAAAADMoYgOAAAAAABzKKIDAAAAAMAciugAAAAAADCHIjoAAAAAAMyhiA4AAAAAAHMoogMAAAAAwBzHDh3AEKqqktwvyaeGjgWAtXJikptaa23oQFaJvA7AQOT1XSanAzCQHXP6WhbR0yXlDw0dBABr6QFJPjx0ECtGXgdgKPL67pLTARjKEXP6uhbRP5UkN954Y0466aShYwFgDdx666154AMfmJhZ1Qd5HYA9Ja/3Rk4HYE8tmtPXtYieJDnppJMkZgBYEfI6AKwGOR2AsdFYFAAAAAAA5lBEBwAAAACAORTRAQAAAABgDkV0AAAAAACYQxEdAAAAAADmUEQHAAAAAIA5FNEBAAAAAGCOwYvoVfUNVfWGqrqpqlpVPWWBa86qqndW1e1V9f6qekb/kQIAAMB6MFYHgE2DF9GT3CPJdUnOW+TkqvryJG9K8odJHpHkF5P8WlU9saf4AAAAYN0YqwPA1LFDB9Ba+x9J/keSVNUil5yb5G9aa8+ZPr++qr4uyY8kuaKXIAEAAGCNGKsDwKYxzERf1plJrtx27IrpcQAAAGDvGasDsLIGn4l+FA4kObjt2MEkJ1XVl7TWPrv9gqo6IckJWw6duFvBvPwP35/feeeHduvlYNQmVfmJJz00jzv9lKFDAQAAxmVUY/Uf++3r8o6//fvdejkYteOPmeRl/+6R+apTd+2vELDNfiyiH40LkvxUHy/8VafcM49XUGRN/PrVH8y1N35CER0AANgNvY3VH/HA/y33+pLj+nhpGJU77tzIq6/62/zlwU8rokOP9mMR/eYkp247dmqSWw/3yfbURUku3vL8xCS7Mn38mx52IN/0sAO78VIwem9610fShg4CAAAYo1GN1Z/+mNN242Vg9D59+5159VV/m2a0Dr3aj0X0q5I8aduxJ0yPH1Zr7fYkt8+eL9gUBdimqtKaxAwAAHwBY3UYwOxvzYahOvRq8MaiVXXPqnpEVT1ieujLp89Pm379oqq6bMslv5LkK6rqP1bV6VX1A0n+bZJf2NvIYf1UJWroAACw+ozVYX+YTD98MuEN+jV4ET3J1yT5s+kj6ZZy/VmSF06ff2mSQ+uwWmt/k+TJ6T7Rvi7Jc5J8b2vtir0KGNbVpCobEjMAAKwDY3XYB2YLOAzVoV+Db+fSWntLNlefHO7rz5hzzSN7Cwo4rCpLxAAAYB0Yq8P+MCuim/AG/RrDTHRgn5hUaVYCAAAAI7G5ncvAgcCKU0QHFlaRmAEAAGAsNhuLGqxDnxTRgYV1jUUlZgAAABiDQzPRB44DVp0iOrCwqrInOgAAAIzEZmNRg3XokyI6sLBJWSIGAAAAY1HTKroJb9AvRXRgYZMqe6IDAADAiExK/zLomyI6sBRLxAAAAGA8uq1XjdWhT4rowMImVZqVAAAAwIhMSmNR6JsiOrCwsic6AAAAjEqlrBqHnimiAwubVGlWAgAAACNSlWwYrEOvFNGBhWlWAgAAAONi61XonyI6sLiyRAwAAADGpNt6degoYLUpogMLMxMdAAAAxmViwhv0ThEdWFhFY1EAAAAYk4oJb9A3RXRgYfZZAwAAgHGpSprROvRKER1Y2KTKTHQAAAAYkcmk7IkOPVNEBxZnT3QAAAAYFVuvQv8U0YGFdY1FJWYAAAAYi66x6NBRwGpTRAcWVrFEDAAAAMakTHiD3imiAwubTKJVCay5qjqvqm6oqtuq6uqqevQO5z+1qt43Pf/dVfWkI5z7K1XVqur8XQ8cAABWVJmJDr1TRAcW1s1El5lhXVXVOUkuTnJhkkcluS7JFVV1ypzzH5vkdUlemeSRSS5PcnlVPfww535rkq9NclMvwQMAwIrq9kQfOgpYbYrowMIsEYO19+wkr2itXdpae2+Sc5N8Jskz55z/w0ne3Fr7udba9a21FyR5Z5If3HpSVd0/ycuSfEeSz/UWPQAArKBJmfAGfVNEBxamWQmsr6o6PskZSa6cHWutbUyfnznnsjO3nj91xdbzq2qS5DVJfq619ue7GTMAAKyDSdl6Ffp27NABAPtHVXy6DevrvkmOSXJw2/GDSU6fc82BOecf2PL8x5PcmeT/XjSQqjohyQlbDp246LUAALBquj3RjdWhT2aiAwszEx3YTVV1RrotX57RlvtX/wVJPrnl8aEewgMAgH2h23p16ChgtSmiAwvTrATW2i1J7kpy6rbjpya5ec41N+9w/tcnOSXJB6vqzqq6M8mXJfn5qrrhCLFclOReWx4PWPA9AADAyrFqHPqniA4srKpipzVYT621O5Jck+Txs2PT/cwfn+SqOZddtfX8qSdsOf81Sf5JkkdsedyU5OeSPPEIsdzeWrt19kjyqeXeDQAArI5JlZE69Mye6MDCJpXcuTF0FMCALk7y6qp6R5K3Jzk/yT2SXJokVXVZkg+31i6Ynv9LSf6oqp6T5E1Jnpbka5J8X5K01v4uyd9t/QZV9bkkN7fW/qL3dwMAACtgUmUmOvRMER1YmCVisN5aa6+vqpOTvDBdc9Brk5zdWps1Dz0tycaW8/+0qp6e5EVJfjbJXyV5SmvtPXsaOAAArLCKPdGhb4rowMI0FgVaa5ckuWTO1846zLHfSvJbS7z+g442NgAAWEddY1GDdeiTPdGBhZmJDgAAAONSVdkwVIdeKaIDC+saiwIAAABjMSnbuUDfFNGBhVXMRAcAAIAxqWgsCn1TRAcWNqnKxsbO5wEAAAB7w57o0D9FdGBhk0paJGYAAAAYi0mVkTr0TBEdWJhmJQAAADAuVbZehb4pogMLq0p8vA0AAADjManSWBR6pogOLEyzEgAAABiXbib60FHAalNEBxY2sUQMAAAARqWqNBaFnimiAwvTrAQAAADGZVKxnQv0TBEdWJglYgAAADAuFavGoW+K6MDCqny8DQAAAGNi1Tj0TxEdWJiZ6AAAADAupX8Z9E4RHVjYpJLm820AAAAYjW7V+NBRwGpTRAcWNqnKxsbQUQAAAAAzEzPRoXeK6MDCNCsBAACAcamUrVehZ4rowMKqaugQAAAAgC0mE7u5QN8U0YGFaVYCAAAA49LNRDdWhz4pogMLm1RFXgYAAIDxqIqp6NAzRXRgYfZEBwAAgHGpMhMd+qaIDixsMjETHQAAAMZkYutV6J0iOrCwKivEAAAAYExsvQr9U0QHFqZZCQAAAIxLt/Xq0FHAalNEBxY2qfh0GwAAAEakdBaF3imiAwsr+6wBAADAqHRj9aGjgNWmiA4szD5rAACwPqrqvKq6oapuq6qrq+rRO5x/flX9RVV9tqpurKpfqKq77VW8sK66VeMG69AnRXRgYVUlMQMAwBqoqnOSXJzkwiSPSnJdkiuq6pQ55z89yUum5z80yfckOSfJz+5JwLDGJlVmokPPRlFE9+k27A+alQAAwNp4dpJXtNYuba29N8m5ST6T5Jlzzn9skj9prf16a+2G1trvJ3ldkiOO74Evnq1XoX+DF9F9ug37x6QqTbMSAABYaVV1fJIzklw5O9Za25g+P3POZX+a5IzZpLiq+ookT0rye/1GC3SNRYE+HTt0ANny6XaSVNW5SZ6c7tPtlxzm/EOfbk+f31BVr0vymL0IFtaZZiUAALAW7pvkmCQHtx0/mOT0w13QWvv1qrpvkrdWV9E7NsmvtNbmTnirqhOSnLDl0IlfVNSwprpV4wbr0KdBZ6L7dBv2l65ZydBRAAAAY1NVZyV5fpIfSLfK/NuSPLmqXnCEyy5I8sktjw/1GyWspkmVsTr0bOiZ6D7dhn1EY1EAAFgLtyS5K8mp246fmuTmOdf8TJLXtNZ+bfr83VV1jyS/WlUvnk6Y2+6idNu7zpwYhXRYmj3RoX+D74m+LJ9uw3AkZgAAWH2ttTuSXJPk8bNjVTWZPr9qzmV3T7K9UH7X7PI53+f21tqts0eST31RgcOamlTZehV6NvRMdJ9uwz7SNRYFAADWwMVJXl1V70jy9iTnJ7lHklk/s8uSfLi1dsH0/DckeXZV/VmSq5N8Zbrx+xtaa3cF6E1VYrAO/Rq0iN5au6OqZp9uX5583qfbl8y57Kg+3U5y++y5rsVwdCrJho+3AQBg5bXWXl9VJyd5YZIDSa5NcnZrbbYd62n5/LH5i9KV8V6U5P5JPpausP4TexUzrKtKWTUOPRt6Jnri023YN8xEBwCA9dFauyRzJri11s7a9vzOJBdOH8AempSJ6NC3wYvoPt2G/aMqOn4DAADAiOhfBv0bvIie+HQb9osqS8QAAABgTDQWhf5Nhg4A2D8mZqIDAADAqJRl49A7RXRgYRVLxAAAAGBMuu1cho4CVpsiOrCwyURjUQAAABiTrrGo0Tr0SREdWFglaWaiAwAAwGhUKhsbQ0cBq00RHVhYVdlmDQAAAEakm4kO9EkRHVhY1/FbagYAAICx6Ca8GatDnxTRgYVpVgIAAADj0o3VDdahT4rowMIm1f3pE24AAAAYh4mtV6F3iujAwipdFV1yBgAAgHGomIkOfVNEBxZWs5now4YBAAAATE0mZZwOPVNEBxZW0yq6T7hhfVXVeVV1Q1XdVlVXV9Wjdzj/qVX1vun5766qJ2352nFV9dLp8X+oqpuq6rKqul//7wQAAFZDxYpx6JsiOrCw2Z7oiuiwnqrqnCQXJ7kwyaOSXJfkiqo6Zc75j03yuiSvTPLIJJcnubyqHj495e7T1/mZ6Z/fluQhSf57f+8CAABWS1UZp0PPFNGBhU3Knuiw5p6d5BWttUtba+9Ncm6SzyR55pzzfzjJm1trP9dau7619oIk70zyg0nSWvtka+0JrbXfbK39RWvtbdOvnVFVp/X/dgAAYP+blHE69E0RHVjYoT3RJWdYO1V1fJIzklw5O9Za25g+P3POZWduPX/qiiOcnyT3Std64RNHGysAAKyTKivGoW/HDh0AsH/M9kRvWpbAOrpvkmOSHNx2/GCS0+dcc2DO+QcOd3JV3S3JS5O8rrV267xAquqEJCdsOXTi/LABAGC1TapMdoOemYkOLGw6ET0bkjOwy6rquCS/me5XzffvcPoFST655fGhfqMDAIDx6hqLGqhDnxTRgYVt7okuOcMauiXJXUlO3Xb81CQ3z7nm5kXO31JA/7IkTzjSLPSpi9Jt+zJ7PGCn4AEAYFVVlfXi0DNFdGBhk+lUdDPRYf201u5Ick2Sx8+OVdVk+vyqOZddtfX8qSdsPX9LAf2rknxja+3vFojl9tbarbNHkk8t814AAGCVTKrsiQ49syc6sLDNxqKSM6ypi5O8uqrekeTtSc5Pco8klyZJVV2W5MOttQum5/9Skj+qquckeVOSpyX5miTfNz3/uCS/neRRSb45yTFVNdsv/ePTwj0AAHAEXWPRoaOA1aaIDizsUGNRyRnWUmvt9VV1cpIXpmsOem2Ss1trs+ahpyXZ2HL+n1bV05O8KMnPJvmrJE9prb1nesr9k3zL9L+v3fbtHpfkLbv/LgAAYLVMyjgd+qaIDixss7Go7AzrqrV2SZJL5nztrMMc+60kvzXn/Buy+asFAAA4ClVlxTj0zJ7owMIONRYdOA4AAACgU2WcDn1TRAcWVocai0rPAAAAMAYVjUWhb4rowMIm9kQHAACAUZlUsqGzKPRKER1Y2GwmuiI6AAAAjMOkynYu0DNFdGBhNa2iWyYGAAAA41Blshv0TREdWNhkNhN92DAAAACAqapKU0WHXimiAwurTGei22sNAAAARqGSGKZDvxTRgYVN7IkOAAAAozIp265C3xTRgYXN9kRvNnQBAACAUZhMNBaFvimiAwub1tAtEwMAAICRqMSe6NAzRXRgYZPZTHTJGQAAAEahayw6dBSw2hTRgYWZiQ4AAADjUvZEh94pogMLmzUWjd3WAAAAYBQmZU906JsiOrCwWWNRM9EBAABgHCaVtGbrVeiTIjqwsNlEdMvEAAAAYBwqs/5lAwcCK0wRHVjYZmPRgQMBAAAAkmz2LzNUh/4oogML22wsKjUDAADAGGxuvWqsDn1RRAcWZiY6AAAAjMtkNhPdWB16o4gOLE1iBgAAgHGwahz6p4gOLGxiiRgAAACMilXj0D9FdGBhk+lvDHkZAAAAxmG2J3ozWofeKKIDC6uYiQ4AAABjMt3NJRuG6tAbRXRgYZqVAAAAwLhsbudisA59UUQHFlaHiugSMwAAAIzBZmPRYeOAVaaIDixsc581AAAAYAxmq8YN1qE/iujAwmZLxDZ8vA0AAACjMJvwpn8Z9EcRHViYZiUAAAAwLptjdYN16IsiOrCwQ81KrBEDAACAUZjYehV6p4gOLGyzseiwcQAAAACdzcaiBuvQF0V0YGGK6AAAADAuk0OD9WHjgFWmiA4sTLMSAAAAGJlDM9GHDQNWmSI6sLCJJWIAAAAwKhMT3qB3iujAwjQrAQCA9VFV51XVDVV1W1VdXVWP3uH8e1fVy6vqI1V1e1X9ZVU9aa/ihXU1sZsL9O7YoQMA9o9pXk7z6TYAAKy0qjonycVJzk1ydZLzk1xRVQ9prX30MOcfn+R/Jvlokm9P8uEkX5bkE3sUMqytmo7WN+znAr1RRAcWNtsTXQ0dAABW3rOTvKK1dmmSVNW5SZ6c5JlJXnKY85+Z5D5JHtta+9z02A17ECesvdlMdKA/tnMBFlaalQAAwMqbzio/I8mVs2OttY3p8zPnXPYtSa5K8vKqOlhV76mq51fVMb0HDOtO/zLo3SiK6PZZg/1BsxIAAFgL901yTJKD244fTHJgzjVfkW4bl2OSPCnJzyR5TpL/a943qaoTquqk2SPJiV9s4LCONsfqAwcCK2zwIvqWfdYuTPKoJNel22ftlDnnz/ZZe1C6BP2QJM9Kt98a0KNDzUokZgAA4PNN0u2H/n2ttWtaa69P8uJ0e6rPc0GST255fKj3KGEFTQ5tvWqwDn0ZvIieLfustdbemy7BfibdfmqHM9tn7SmttT9prd3QWvuj1tp1exQvrK1ZsxKJGQAAVtotSe5Kcuq246cmuXnONR9J8pettbu2HLs+yYHpZLjDuSjJvbY8HnDUEcMas/Uq9G/QIrp91mB/qelvDHkZAABWV2vtjiTXJHn87FhVTabPr5pz2Z8k+crpeTP/KMlHpq93uO9ze2vt1tkjyad25Q3AmtlsLGq0Dn0Zeia6fdZgH5nlZXuiAwDAyrs4ybOq6rur6qFJfjnJPZJcmiRVdVlVXbTl/F9Ot2r8l6rqH1XVk5M8P8nL9zhuWEP2RIe+HTt0AEdh6z5rdyW5pqrun+RH0+2rfjgXJPmpPYoPVtbmPmsDBwIAAPSqtfb6qjo5yQvTTXK7NsnZrbXZJLjTkmxsOf/Gqnpikl9I8q50fct+KclL9zJuWEf6l0H/hi6iH+0+a5+bt8/anGViF6X7FH3mxGhYAkvb7PgtMwMAwKprrV2S5JI5XzvrMMeuSvK1PYcFbGOsDv0bdDsX+6zB/lI+3QYAAIBR2WwsarAOfRl6T/TEPmuwbxwqomtWAgAAAKNg61Xo39DbudhnDfaRmjUr2djhRAAAAGBPKaJDfwYvoif2WYP94lCzkmHDAAAAAKYOzUQ3WofejGE7F2CfKM1KAAAAYFQ290QfNg5YZYrowMIOzURXRAcAAIBRmJjwBr1TRAcWVpqVwOCq6j4Df//zquqGqrqtqq6uqkfvcP5Tq+p90/PfXVVP2vb1qqoXVtVHquqzVXVlVX1Vv+8CAFZTVd2/qu4/dBzA3tqc8DZsHLDKli6iV9VpVfWd00HxV/YRFDBeVZaIwcBuqaobq+qNVfXiqvq3VfWQmn3K1aOqOifJxUkuTPKoJNcluaKqTplz/mOTvC7JK5M8MsnlSS6vqodvOe3HkvyHJOcmeUySf5i+5t16ehsAsHKq6p9X1d8k+WCSD1bVwap6aVWdNHRsQP/KqnHo3VJF9Kr6D0n+Osl/TvJrSf6iqt5eVf+kj+CA8ZlUaVYCw/rqJM9L8t4k/yzJy6f//emqurrn7/3sJK9orV3aWntvusL3Z5I8c875P5zkza21n2utXd9ae0GSdyb5waSbhZ7k/CQvaq39t9bau5J8V5L7JXlKr+8EAFbLf0lyfbp/GzwkyY8m+cYk7zQzHVbfoVXjA8cBq+zYJc9/QZKXJPnJ1trGdCb6DyS5qqqe2Fp7665HCIxKxUx0GFJr7c+T/HmS1yaHCtFnJ3lZkj/o6/tW1fFJzkhy0ZZYNqrqyiRnzrnszHQz17e6IpsF8i9PciDJlVte85PTDwPOTPIbc2I5IckJWw6duPAb2cFn77grH/jYp3fr5QAYoQeffM98yfHHDB3Gbntwkm9rrf3l9Pn7q+o1SX4zyS8meepQgQH9my1J3TBYh94sW0S/Z5JXtdY2kqS19v4kz66qjyf5+XTLsIEVNqmy0RqMSOvWbP6PqvrOJN/X47e6b5JjkhzcdvxgktPnXHNgzvkHtnw9O5xzOBck+akjBXu0PvCxT+ebX2ZOAMAqe+MPfV0efv97DR3Gbrs+ySlJZkX0tNZaVf1kkrcPFhWwJyZmokPvli2ivyvdzLD3bzv+m0l+YlciAkbNnugwTq21t1XV64aOY49clM+f4X5ikg/txgs/+OR75o0/9HW78VIAjNSDT77n0CH04VVJXlZV39Jau3HL8XsluXWYkIC9Miuib5jwBr1Ztoj+nCS/W1V3JPnNttmx4DFJ/mpXIwNGqSuiS8wwlKr6dJJ3p2vq+a7pn+9Ltwfqrm1rchi3JLkryanbjp+a5OY519y8w/k3bzn2kW3nXDsvkNba7Ulunz3fzZ6qX3L8Mas4OxGA1feL0z//qqp+N10ePSbJd6Zr4g2ssM3GosPGAatsqSJ6a+2tVfWMJL+S7lPua5Mcn+ThSf6PXY8OGJ1JlcQMw/r2JI+YPn443R6olW715gv6+qattTuq6pokj09yeZJU1WT6/JI5l101/fovbjn2hOnxJPmbdIX0x2daNK+qk9J9OP/Luxk/AKy4L033b4N/Ov3zGUm+Kt2/D36sqv5Vug/f39Vae/MwIQJ9UUSH/i07Ez2ttd+rqq9KN+A9K8kjp19643Rv9HenS8zn71aQwHh0jUVlZhjKdOB7aPBbVXdP16Dz71pr82aE75aLk7y6qt6Rbn/V85PcI8ml01guS/Lh1toF0/N/KckfVdVzkrwpydOSfE2me7dP92r9xST/V1X9Vbqi+s8kuSnTQj0AsLPW2sF0zbuvmB2rqrsl+epsFte/Jcnzk9x77yME+lS2c4HeLV1ETw4to/696SNJUlUPTJecH5nNwjqwYia7uG0C8MVrrX0myZ/v0fd6fVWdnOSF6Rp/Xpvk7OnAPUlOS7Kx5fw/raqnJ3lRkp9Nt/XbU1pr79nysv8xXSH+V9MN6t86fc3b+n03ALDaprn0/5s+gBU2mc1EHzYMWGlHVUQ/nGnzkhuTvGG3XhMYIXuiw1prrV2SOdu3tNbOOsyx30ryW0d4vZbkJ6cPAABgSRUz0aFvk6EDAPaXSVU25GUAAAAYhUMz0RXRoTeK6MBSJqVZCQAAAIzFbE90Y3XojyI6sJSqskQMAAAARmLWusyqceiPIjqwlIm+ogAAADAak0Mz0VXRoS+K6MCSKhs+3gYAAIBRmM11M1SH/iiiA0uZlMQMAAAAY2EmOvRPER1YyqQqLRIzAAAAjEFNq3tG6tAfRXRgKWUmOgAAAIzG5nYuBuvQF0V0YCmTqkRiBgAAgFHY3M5l4EBghSmiA0szEx0AAADGYVpDNxMdeqSIDixlMok90QEAAGAkZjPRgf4oogNLmVSZiQ4AAAAjYSY69E8RHVhKRWIGAACAsahpa9GNjYEDgRWmiA4spWssOnQUAAAAQJJMpjPRDdWhP4rowHLKTHQAAAAYi5ru52KsDv1RRAeWMqmKvAwAAADjMJuJbio69EcRHVhKtyf60FEAAAAAiZnosBcU0YGlTKokZgAAABiRKhPeoE+K6MBSqnY+BwAAANg7k6o0+7lAbxTRgaWUmegAAAAwKrZehX4pogNLmVQ0FgUAAIARmZTBOvRJER1YSrfPmsQMAAAAo2FPdOiVIjqwlG6fNQAAAGAsulXjRuvQF0V0YClVJTEDAADAiEyqzESHHimiA0upJBsbQ0cBAAAAzHSNRVXRoS+K6MBSJpU0G7oAAADAaEyqhg4BVpoiOrCUskQMAAAAxqXMRIc+KaIDS+malQwdBQAAADAzqTJWhx4pogNLqWgsCgAAAGNSFavGoUeK6MBSyhIxAAAAGJVJlbE69EgRHVjKpEpbUQAAABiRib6i0CtFdGAplogBAADA2FQ2DNahN4rowFK6ZiUSMwAAAIzFpGLVOPRIER1YSlV0/AYAAIAR0b8M+qWIDiylNCsBAACAUekaiw4dBawuRXRgKRMz0QEAAGBUJpaNQ68U0YGlVCwRAwAAgLExEx36o4gOLGVSpVkJAAAAjMhkkjSjdeiNIjqwlG6FmMQMAACrrqrOq6obquq2qrq6qh694HVPq6pWVZf3HCIwVbEnOvRJER1YSlXZZg0AAFZcVZ2T5OIkFyZ5VJLrklxRVafscN2DkvynJH/cd4zAJv3LoF+K6MBSJmVPdAAAWAPPTvKK1tqlrbX3Jjk3yWeSPHPeBVV1TJLXJvmpJH+9J1ECSaZbrxqrQ28U0YGlWCIGAACrraqOT3JGkitnx1prG9PnZx7h0p9M8tHW2iv7jRD4Aia8Qa+OHToAYH/pmpUAAAAr7L5JjklycNvxg0lOP9wFVfV1Sb4nySMW/SZVdUKSE7YcOnGpKIFDJrZehV6ZiQ4spWKJGAAAsKmqTkzymiTPaq3dssSlFyT55JbHh3oID9ZCJVaNQ49GU0TX9Rv2h9KsBAAAVt0tSe5Kcuq246cmufkw5z84yYOSvKGq7qyqO5N8V5JvmT5/8Jzvc1GSe215PGAXYoe1NKlKs24cejOKIrqu37B/VJV91gAAYIW11u5Ick2Sx8+OVdVk+vyqw1zyviRfnW4rl9njvyf5w+l/3zjn+9zeWrt19kjyqd16D7BuTHiDfo2iiB5dv2HfmGhWAgAA6+DiJM+qqu+uqocm+eUk90hyaZJU1WVVdVGStNZua629Z+sjySeSfGr6/I6B3gOsDRPeoF+DNxbd0vX7otmx1tpGVS3c9buqvr7nMIEpzUoAAGD1tdZeX1UnJ3lhkgNJrk1ydmtt1mz0tCQbA4UHbDMxEx16NYaZ6Efq+n3gcBds6fr9rEW+QVWdUFUnzR7R8RuOWkVihnVUVfepqtdW1a1V9YmqemVV3XOHa+5WVS+vqr+rqk9X1e9U1albvv5Pq+p1VXVjVX22qq6vqh/u/90AAItorV3SWvuy1toJrbXHtNau3vK1s1przzjCtc9orT1lL+IEuu1czESH/oyhiL6Uo+z6reM37JLSrATW1WuTPCzJE5J8c5JvSPKrO1zzC0n+dZKnJvkXSe6X5He3fP2MJB9N8p3T135xkouq6gd3NXIAAFhxXWNRoC+Db+eSL67r9+zYJEmmHcAf0lr7wLZrLkq3n9vMiVFIh6PSfbo9dBTAXprug3p2kn/WWnvH9NgPJfm9qnpua+2mw1xzr3Srxp7eWvtf02P/Psn1VfW1rbW3tdb+67bL/rqqzkzybUku6fEtAQDASulWjRusQ18Gn4m+F12/dfyG3dPtsyYxw5o5M8knZgX0qSvT7YP6mDnXnJHkuOl5SZLW2vuSfDBH7nlyryQf/6KiBQCANVP6l0GvxjATPelmib+6qt6R5O1Jzs+2rt9JPtxau6C1dluS92y9uKo+kSTTDuBAjyZVZqLD+jmQbtuVQ1prd1bVxzOnf8n0+B2ttU9sO36kniePTXJOkicfKZiqOiHJCVsO6XUCAMBam9gTHXo1+Ez0pOv6neS56bp+X5tuRvn2rt9fOkhwwOcpM9FhZVTVS6qq7fA4fY9ieXiS/5bkwtba7+9wul4nAACwRZnwBr0ay0z0tNYuyZz9T1trZ+1w7TN6CAk4jNKsBFbJzyd51Q7n/HW6HiWnbD1YVccmuU8O378k0+PHV9W9t81G/4KeJ1X1j5P8QZJfba29aIG49ToBAIAtuq1Xh44CVtdoiujA/lCxRAxWRWvtY0k+ttN5VXVVkntX1RmttWumh/9luhVtV8+57Jokn0vX4+R3pq/zkHSryw71PKmqhyX5X0le3Vr7iQXjvj3J7VteY5HLAABgZVXKqnHo0Si2cwH2j4lmJbB2WmvXJ3lzkldU1aOr6p+nWz32G621m5Kkqu5fVe+rqkdPr/lkklcmubiqHldVZ6TrdXJVa+1t02senq4x+O9PzzswfZy8528SAAD2sapYNQ49MhMdWEpV7LMG6+k70hXO/yDJRrrZ5f9hy9ePS/KQJHffcuxHtpx7QpIrkvzAlq9/e5KTk3zn9DHzt0ketKvRAwDACiuNRaFXiujAUrqZ6BIzrJvW2seTPP0IX78h3Y5PW4/dluS86eNw1/x0kp/erRgBAGBdTTQWhV7ZzgVYSmlWAgAAAKNiwhv0SxEdWEqlLBEDAACAETHhDfqliA4sZaJZCQAAAIxKVaUZrUNvFNGBpWhWAgAAAONSSTY2ho4CVpciOrCUbp+1oaMAAAAAZiYmvEGvFNGBpZRmJQAAADAqkyqbuUCPFNGBpXTbuQwdBQAAADDTNRY1WIe+KKIDS+kai0rMAAAAMBZl61XolSI6sJRKaVYCAAAAI1KxJzr0SREdWMqkho4AAAAA2Mqe6NAvRXRgKVXl020AAAAYkclE/zLokyI6sJSusajMDAAAAGNRKY1FoUeK6MBSJpqVAAAAwKhUxVgdeqSIDiyla1YydBQAAADAjK1XoV+K6MBSJpNKtCsBAACA0ZiYiQ69UkQHlmYmOgAAAIxHt2rcYB36oogOLGViiRgAAACMiv5l0C9FdGAplogBAADAuFRVmq1XoTeK6MBSqiwRAwAAgDHpxupDRwGrSxEdWMqkSl9RAAAAGJFu1bjBOvRFER1YmpnoAAAAMB6VMhMdeqSIDixlUmUiOgAAAIzIZGLROPRJER1YysSe6AAAADAqVWU7F+iRIjqwlCpLxAAAAGBMKia8QZ8U0YGlTCrWiAEAAMCITKqihg79UUQHllPl020AAAAYkapYNQ49UkQHljIpE9EBAABgTCb2RIdeKaIDS6mYiQ4AAABjY6gO/VFEB5YyKYkZAAAAxmRi61XolSI6sJRJVZJYJgYAAAAjYetV6JciOrCcroauYQkAAACMRNdY1EAd+qKIDizFTHQAAAAYl0mZig59UkQHljKdiG4mOgAAAIyFmejQK0V0YCmT6W8NyRkAAADGoWssOnQUsLoU0YGlzLZzAQAAAMahayyqig59UUQHjoqZ6AAAADAOlcrGxtBRwOpSRAeWstlYdOBAAAAAgCTdTHSgP4rowFJmu7mYiQ4AAAAjUWWcDj1SRAeWcmgm+sBxAAAAAJ1JWTEOfVJEB5YyWyHW7LUGAAAAo1AxEx36pIgOLKWmM9ElZwAAABiHSSUbhunQG0V0YCmzZiVyMwAAAIzDZFIxUof+KKIDSzETHQAAAMbHTHTojyI6sJRDM9ElZwAAABiFSVWagTr0RhEdWEodKqJLzgAAADAGZU906JUiOrCUze1cBg4EAADoVVWdV1U3VNVtVXV1VT36COc+q6r+uKr+fvq48kjnA7urayxqoA59UUQHljKZFtGbhiUAALCyquqcJBcnuTDJo5Jcl+SKqjplziVnJXldksclOTPJjUl+v6ru33+0wKRKX1HokSI6sJTpbi5mogMAwGp7dpJXtNYuba29N8m5ST6T5JmHO7m19h2ttf/cWru2tfa+JN+brubw+D2LGNacmejQH0V0YCmHZqJLzgAAsJKq6vgkZyS5cnastbYxfX7mgi9z9yTHJfn4rgcIfIFJlYno0CNFdGApm41Fh40D2FtVdZ+qem1V3VpVn6iqV1bVPXe45m5V9fKq+ruq+nRV/U5VnTrn3P+9qj5UVa2q7t3LmwAAFnXfJMckObjt+MEkBxZ8jZcmuSlbCvHbVdUJVXXS7JHkxKMJFpg1FjVQh74oogNLUUSHtfXaJA9L8oQk35zkG5L86g7X/EKSf53kqUn+RZL7JfndOee+Msm7diVSAGBQVfW8JE9L8q2ttduOcOoFST655fGhPQgPVtKkyjgdeqSIDixltp2LT7hhfVTVQ5OcneR7W2tXt9bemuSHkjytqu4355p7JfmeJM9urf2v1to1Sf59ksdW1dduO/f7k9w7yX/q8W0AAIu7JcldSbavIDs1yc1HurCqnpvkeUm+qbW20wfkFyW515bHA44qWiCTMtkN+qSIDixls7Go7Axr5Mwkn2itvWPLsSuTbCR5zJxrzki3D+rWvVTfl+SD2bKXalX94yQ/meS7pq+3I0u/AaBfrbU7klyTLU1Bq2rWJPSqeddV1Y8leUGSs7f9u2He97m9tXbr7JHkU1908LCuqozToUejKaJX1XlVdUNV3VZVV1fVo49w7rOq6o+r6u+njyuPdD6weyaTaWPRgeMA9tSBJB/deqC1dme6RmHz9kU9kOSO1tonth0/tJdqVZ2Q5HVJfrS19sEl4rH0GwD6d3GSZ1XVd09Xpf1yknskuTRJquqyqrpodnJV/XiSn0nyzCQ3VNWB6eOIPVSA3TEp43To0yiK6FV1TroEfWGSRyW5LskVVXXKnEvOSjfofly62Ww3Jvn9qrp//9HCepvNRG8+4YZ9r6peMm3keaTH6T2GcFGS61tr/89RXGfpNwD0qLX2+iTPTfLCJNcmeUS6GeazZqOnJfnSLZd8f5Ljk/x2ko9seTx3byKG9VYxEx36dOzQAUw9O8krWmuzT7TPTfLkdJ9gv2T7ya2179j6vKq+N8m/Sbe07LLeo4U1VtM90eVmWAk/n+RVO5zz1+n2Pv28D7ar6tgk98n8fVFvTnJ8Vd1722z0rXup/sskX11V3z572emft1TVi1trP3W4F26t3Z7k9i2x7PAWAICj0Vq7JMklc7521rbnD9qDkIA57IkO/Rq8iF5Vx6fbN/XQMrDW2kZVXZkte6bu4O7p9l39+JzvcUKSE7YcsncqHKVZrWpDcoZ9r7X2sSQf2+m8qroqyb2r6oxpg9CkK4BPklw957Jrknwu3QfcvzN9nYekm7U220v13yT5ki3X/LMk/zXJ1yf5wFJvBgAA1thsrN5aM8kEejB4ET3JfZMck26P1K0OJll0CflLk9yULc3LtrkgyWFnswHLmUyTsWVisD5aa9dX1ZuTvGK6Wuy4dLPSfqO1dlOSTLdU+4Mk39Vae3tr7ZNV9cokF1fVx5PcmuRlSa5qrb1t+rqfVyivqvtO//P6w+ylDgAAzFGHxurJMWrosOtGsSf6F6OqnpfkaUm+tbV225zT7J0Ku2Ry6NPtYeMA9tx3JHlfukL57yV5a5Lv2/L145I8JN3qsJkfSfLGdDPR/99027h8214ECwAA62RyaOtVg3Xowxhmot+S5K50e6RutXXP1MOqqucmeV6Sb2ytvWveefZOhd1TMRMd1lFr7eNJnn6Er9+QzT3NZ8duS3Le9LHI93jL9tcAAAB2NvtHtK1XoR+Dz0Rvrd2Rbt/Ux8+OVdVk+vyqeddV1Y8leUG67uDv6DtOoOMzKAAAABiXybTC16KKDn0Yw0z0JLk4yaur6h1J3p7k/CT3SHJpklTVZUk+3Fq7YPr8x5O8MN2MuBuq6sD0dT7dWvv0HscOa2WzsajEDAAAAGMwWzVuqA79GEURvbX2+qo6OV1h/ECSa9PNMJ81Gz0tycaWS74/yfFJfnvbS12Y5Kd7DRbW3OY+awMHAgAAACTZnPBmrA79GEURPUlaa5ckuWTO187a9vxBexAScBiTsic6AAAAjImxOvRr8D3Rgf1lczuXYeMAAAAAOrZehX4pogNLmRxqLCoxAwAAwBgc2np14DhgVSmiA0uaLREbOAwAAAAgyWyknrSNI54GHCVFdGApE81KAAAAYFTq0Ex0g3XogyI6sJTSrAQAAABGRf8y6JciOrCUiWYlAAAAMCoTE96gV4rowFJmidkKMQAAABgHW69CvxTRgaNiiRgAAACMw6H5bqro0AtFdGApk4lmJQAAADAmm41FgT4oogNLmX64bSY6AAAAjMTmWN1gHfqgiA4sRbMSAAAAGJfNsfrAgcCKUkQHljJrVmKNGAAAAIzDrIhuT3TohyI6sJxpEd1MdAAAABiHzcaiw8YBq0oRHVjK5qfbAwcCAAAAJFFEh74pogNL0awEAAAAxqWifxn0SREdWMqhmegDxwEAAAB0Zv3LjNWhH4rowFI0KwEAAIBxmUzMRIc+KaIDyznUWHTYMAAAAIDObOtVE96gH8cOHQCwv8yWiL3oje/NL135V8MGA3vkzed/fWrWqQcAAGBkZuOV7331O3LCsccMHA3074H3uXt+7bu/Zs++nyI6sJQT73ZcnvevTs/Nn7xt6FAAAACAJA+730k573EPzj/cftfQocCeOPnEE/b0+ymiA0s79188eOgQAAAAgKm7HXdMfvSJpw8dBqwse6IDAAAAAMAciugAAAAAADCHIjoAAAAAAMyhiA4AAAAAAHMoogMAAAAAwByK6AAAAAAAMIciOgAAAAAAzKGIDgAAAAAAcyiiAwAAAADAHIroAAAAAAAwhyI6AAAAAADMoYgOAAAAAABzHDt0AEO69dZbhw4BgDUh5/TPPQZgr8g5/XJ/Adgri+acaq31HMr4VNX9k3xo6DgAWEsPaK19eOggVom8DsCA5PVdJKcDMKAj5vR1LaJXkvsl+VRP3+LEdIn/AT1+j/3OPVqM+7QY92ln7tFi+r5PJya5qa1j8u1Rz3nd353FuE87c48W4z4txn3a2V7cI3l9lxmrj4J7tBj3aWfu0WLcp8UMPlZfy+1cpjekt9kCXd5PknyqtWYd2mG4R4txnxbjPu3MPVrMHtwn974HfeZ1f3cW4z7tzD1ajPu0GPdpZ3t0j9z7XWasPjz3aDHu087co8W4T4sZw1hdY1EAAAAAAJhDER0AAAAAAOZQRO/H7UkunP7J4blHi3GfFuM+7cw9Woz7xHZ+JhbjPu3MPVqM+7QY92ln7hGH4+diZ+7RYtynnblHi3GfFjP4fVrLxqIAAAAAALAIM9EBAAAAAGAORXQAAAAAAJhDER0AAAAAAOZQRD9KVXVeVd1QVbdV1dVV9egdzn9qVb1vev67q+pJexXrUJa5R1X1rKr646r6++njyp3u6apY9mdpy3VPq6pWVZf3HOLgjuLv272r6uVV9ZGqur2q/tLfucOef35V/UVVfbaqbqyqX6iqu+1VvHutqr6hqt5QVTdN/+48ZYFrzqqqd05/jt5fVc/oP1L2mpy+GHl9Z3L6YuT1ncnpO5PXmUde35mcvhh5fWdy+mLk9SPbLzldEf0oVNU5SS5O1xX2UUmuS3JFVZ0y5/zHJnldklcmeWSSy5NcXlUP35OAB7DsPUpyVrp79LgkZya5McnvV9X9+492OEdxn2bXPSjJf0ryx33HOLSj+Pt2fJL/meRBSb49yUOSPCvJh/ci3qEcxX16epKXTM9/aJLvSXJOkp/dk4CHcY909+W8RU6uqi9P8qYkf5jkEUl+McmvVdUTe4qPAcjpi5HXdyanL0Ze35mcvjB5nS8gr+9MTl+MvL4zOX0x8vpC9kdOb615LPlIcnWSS7Y8n6T7S/+8Oee/Pskbtx17W5JfGfq9jOUeHeb6Y5LcmuS7hn4vY7tP03vzJ+l+kb4qyeVDv48x3aMk5yb5QJLjho595PfpkiR/sO3Yzyd569DvZY/uV0vylB3OeWmS92w79htJ3jx0/B67+rMgp/dwnw5z/crndTm9n/u0jnldTj+qeyave8z+n8rru3yPDnP9yuf0o71P65bX5fTe7tNa5/Ux53Qz0Zc0/eTsjCRXzo611jamz8+cc9mZW8+fuuII5+9rR3mPtrt7kuOSfHzXAxyJL+I+/WSSj7bWXtlvhMM7ynv0LUmuSvLyqjpYVe+pqudX1TG9BzyQo7xPf5rkjNkysqr6iiRPSvJ7/Ua7r6zV7+51JKcvRl7fmZy+GHl9Z3J6r9bu9/e6kdd3JqcvRl7fmZy+GHm9N4P87j62zxdfUfdN9+niwW3HDyY5fc41B+acf2B3QxuNo7lH2700yU35wr8Uq2Tp+1RVX5fuU+1H9BrZeBzNz9JXJPmXSV6bLtF8ZZL/nO4fehf2E+bglr5PrbVfr6r7JnlrVVW6fPArrbVVXiK2rHm/u0+qqi9prX12gJjYXXL6YuT1ncnpi5HXdyan90deX33y+s7k9MXI6zuT0xcjr/djkJxuJjqjU1XPS/K0JN/aWrtt6HjGoqpOTPKaJM9qrd0ydDwjNkny0STf11q7prX2+iQvTrd0jKmqOivJ85P8QLp92b4tyZOr6gUDhgWsIHn9C8npS5HXdyCnA3tFTj88eX1hcvoC5PXxMhN9ebckuSvJqduOn5rk5jnX3Lzk+fvd0dyjJElVPTfJ85J8Y2vtXf2ENxrL3qcHp2vA8Ybuw8gk0w/CqurOJA9prX2gl0iHczQ/Sx9J8rnW2l1bjl2f5EBVHd9au2P3wxzc0dynn0nymtbar02fv7uq7pHkV6vqxdMlZutu3u/uW81WWxly+mLk9Z3J6YuR13cmp/dHXl998vrO5PTFyOs7k9MXI6/3Y5Ccbib6kqZ/qa9J8vjZsaqaTJ9fNeeyq7aeP/WEI5y/rx3lPUpV/ViSFyQ5u7X2jr7jHNpR3Kf3JfnqdMvDZo//ns1uxDf2GO4gjvJn6U+SfOX0vJl/lOQjK5qUj/Y+3T3J9uQ7+8dMhWTNfnevIzl9MfL6zuT0xcjrO5PTe7V2v7/Xjby+Mzl9MfL6zuT0xcjrvRnmd3efXUtX9ZHknCS3JfnuJA9N8l+S/H2SU6dfvyzJRVvOf2ySzyV5Tro9j346yR1JHj70exnRPfrxJLcn+Tfp9jaaPe459HsZ0306zPWvyup3/F72Z+mB6brFvyxdQn5yur2xfmLo9zKy+/TT0/v0tCRfni7hvD/J64d+Lz3eo3tm8x+1LcmPTP/7tOnXL0py2ZbzvzzJPyT5j9Pf3T+Q5M4kTxz6vXjs6s+FnN7PfVq7vC6n9/aztHZ5XU5f+D7J6x6H+7mQ13f/Hq1dTj+a+3SY61c+r8vpvd2ntcvr+yWnD36j9usjyQ8m+dtpMrk6yWO2fO0tSV617fynJvmL6fnvSfKkod/DmO5Rkhumf1G2P3566Pcxpvt0mGtXPjEfzT1K15H5bdNE9YF0+4kdM/T7GNN9Sred109Nk/Fnk3wwycuT3Hvo99Hj/Tlrzu+ZV02//qokbznMNX82vacfSPKMod+HRy8/G3L6Lt+ndc3rcno/92kd87qcvtA9ktc95v1syOu7eI/WNacfzc/StmvXIq/L6bt/n9Yxr++XnF7TbwwAAAAAAGxjT3QAAAAAAJhDER0AAAAAAOZQRAcAAAAAgDkU0QEAAAAAYA5FdAAAAAAAmEMRHQAAAAAA5lBEBwAAAACAORTRAQAAAABgDkV0AAAAAACYQxEdAAAAAADmUEQHAAAAAIA5FNGBHVXVv6uqz1bVl245dmlVvauq7jVkbADAcuR1AFgNcjrsHUV0YBG/keQvkzw/SarqwiTfmORftdY+OWRgAMDS5HUAWA1yOuyRY4cOABi/1lqrqp9I8ttVdXOSH0ry9a21Dw8cGgCwJHkdAFaDnA57p1prQ8cA7BNV9c4kD0vyTa21Pxo6HgDg6MnrALAa5HTon+1cgIVU1dlJTk9yTJKDA4cDAHwR5HUAWA1yOuwNM9GBHVXVo5K8Jcn/meQZSW5trT11yJgAgKMjrwPAapDTYe/YEx04oqp6UJI3JfnZ1trrquqvk1xVVY9qrb1z2OgAgGXI6wCwGuR02FtmogNzVdV9kvxpkre01s7dcvxNSY5prZ09WHAAwFLkdQBYDXI67D1FdAAAAAAAmENjUQAAAAAAmEMRHQAAAAAA5lBEBwAAAACAORTRAQAAAABgDkV0AAAAAACYQxEdAAAAAADmUEQHAAAAAIA5FNEBAAAAAGAORXQAAAAAAJhDER0AAAAAAOZQRAcAAAAAgDkU0QEAAAAAYI7/H40nV2P+gf3sAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1500x400 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "states = (r\"$\\rho$\", r\"$u$\", r\"$p$\")\n",
    "plt.figure(figsize=(15, 4), dpi=100)\n",
    "for i, state in enumerate(Primitive, 1):\n",
    "    plt.subplot(1, 3, i)\n",
    "    plt.plot(x, u[0, state.value], linewidth=1)\n",
    "    plt.xlabel(\"$x$\")\n",
    "    plt.ylabel(states[i-1])\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "584852c9-215d-4c2c-83be-dadd4597a505",
   "metadata": {},
   "source": [
    "### Conservative states"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "74d41992-fee3-47c1-9614-a07b688edb39",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1500x400 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "states = (r\"$\\rho$\", r\"$\\rho u$\", r\"$\\rho e$\")\n",
    "plt.figure(figsize=(15, 4), dpi=100)\n",
    "for i, state in enumerate(Conservative, 1):\n",
    "    plt.subplot(1, 3, i)\n",
    "    plt.plot(x, q[0, state.value], linewidth=1)\n",
    "    plt.xlabel(\"$x$\")\n",
    "    plt.ylabel(states[i-1])\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "ab26ccbb-cd40-4a13-981b-d013a9a05925",
   "metadata": {},
   "outputs": [],
   "source": [
    "rhs_buffer = np.zeros((len(Conservative), nx))\n",
    "conser_values_L, conser_values_R = np.zeros((len(Conservative), nx+1)), np.zeros((len(Conservative), nx+1))\n",
    "f = np.zeros((len(Conservative), nx+1))\n",
    "\n",
    "# for Dirichlet boundary (for this case, symmetric boundary is possible)\n",
    "def update_ghost_cells(buffer):\n",
    "    buffer[:, 0], buffer[:, 1], buffer[:, 2] = buffer[:, 5], buffer[:, 4], buffer[:, 3]\n",
    "    buffer[:, -1], buffer[:, -2], buffer[:, -3] = buffer[:, -6], buffer[:, -5], buffer[:, -4]\n",
    "    \n",
    "\n",
    "def right_hand_side(q0):\n",
    "    # update first term\n",
    "    for i in range(nx + 1):\n",
    "        for state in Conservative:\n",
    "            value = (q0[state.value, i], q0[state.value, i + 1], q0[state.value, i + 2], q0[state.value, i + 3], q0[state.value, i + 4])\n",
    "            conser_values_L[state.value, i] = weno5_reconstruction(value)\n",
    "            \n",
    "            value = (q0[state.value, i+5], q0[state.value, i + 4], q0[state.value, i + 3], q0[state.value, i + 2], q0[state.value, i + 1])\n",
    "            conser_values_R[state.value, i] = weno5_reconstruction(value)\n",
    "    for state in Conservative:\n",
    "        f[state.value] = 0.5 * (flux(conser_values_L, state) + flux(conser_values_R, state))\n",
    "\n",
    "    # update second term \n",
    "    # TODO: better logic\n",
    "    for i in range(nx + 1):\n",
    "        rhoL = conser_values_L[Conservative.mass.value, i]\n",
    "        uL = conser_values_L[Conservative.momentum.value, i] / rhoL\n",
    "        eL = conser_values_L[Conservative.energy.value, i] / rhoL\n",
    "        pL = (GAMMA - 1) * (eL * rhoL - 0.5 * rhoL * uL**2)\n",
    "        hL = eL + pL / rhoL\n",
    "        \n",
    "        rhoR = conser_values_R[Conservative.mass.value, i]\n",
    "        uR = conser_values_R[Conservative.momentum.value, i] / rhoR\n",
    "        eR = conser_values_R[Conservative.energy.value, i] / rhoR\n",
    "        pR = (GAMMA - 1) * (eR * rhoR - 0.5 * rhoR * uR**2)\n",
    "        hR = eR + pR / rhoR\n",
    "        \n",
    "        alpha = 1 / (np.sqrt(abs(rhoL)) + np.sqrt(abs(rhoR)))\n",
    "        \n",
    "        uu = (np.sqrt(abs(rhoL))*uL + np.sqrt(abs(rhoR))*uR)*alpha\n",
    "        hh = (np.sqrt(abs(rhoL))*hL + np.sqrt(abs(rhoR))*hR)*alpha\n",
    "        aa = np.sqrt(abs((GAMMA - 1) * (hh - 0.5 * uu**2)))\n",
    "        \n",
    "        eigen1, eigen2, eigen3 = abs(uu), abs(uu + aa), abs(uu - aa)\n",
    "        beta, phi2 = 0.5 / aa**2, 0.5 * (GAMMA - 1) * uu**2  #psi2 means psi^2\n",
    "        \n",
    "        R11, R21, R31 = 1.0, uu, phi2 / (GAMMA - 1)\n",
    "        R12, R22, R32 = beta, beta * (uu + aa), beta * (hh + uu * aa)\n",
    "        R13, R23, R33 = beta, beta * (uu - aa), beta * (hh - uu * aa)\n",
    "        \n",
    "        L11, L12, L13 = 1.0 - phi2 / aa**2, (GAMMA - 1) * uu / aa**2, -(GAMMA - 1) / aa**2\n",
    "        L21, L22, L23 = phi2 - uu * aa, aa - (GAMMA - 1) * uu, GAMMA - 1\n",
    "        L31, L32, L33 = phi2 + uu*aa, -aa - (GAMMA - 1) * uu, GAMMA - 1\n",
    "        \n",
    "        R = np.array([\n",
    "            [R11, R12, R13],\n",
    "            [R21, R22, R23],\n",
    "            [R31, R32, R33]\n",
    "        ])\n",
    "        \n",
    "        L = np.array([\n",
    "            [L11, L12, L13],\n",
    "            [L21, L22, L23],\n",
    "            [L31, L32, L33]\n",
    "        ])\n",
    "        \n",
    "        V = np.diag([eigen1, eigen2, eigen3])\n",
    "        \n",
    "        result = 0.5 * R @ V @ L\n",
    "\n",
    "        for state in Conservative:\n",
    "            f[state.value, i] -= result[state.value] @ (conser_values_R[:, i] - conser_values_L[:, i])\n",
    "\n",
    "    for i in range(nx):\n",
    "        for state in Conservative:\n",
    "            rhs_buffer[state.value, i] = - (f[state.value, i+1] - f[state.value, i]) / dx\n",
    "    return rhs_buffer\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "053fa3f7-5caf-41ad-b7b6-04034677f5d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "intermediate = np.zeros_like(q[0])\n",
    "to_update_slice = slice(ghost_cells_n, nx+ghost_cells_n)\n",
    "\n",
    "for i in range(1, nt+1):\n",
    "    \n",
    "    buffer = right_hand_side(q[i-1])\n",
    "    intermediate[:, to_update_slice] = rk3(1, q[i-1, :, to_update_slice], buffer, dt, None)\n",
    "    update_ghost_cells(intermediate)\n",
    "    \n",
    "    buffer = right_hand_side(intermediate)\n",
    "    intermediate[:, to_update_slice] = rk3(2, q[i-1, :, to_update_slice], buffer, dt, intermediate[:, to_update_slice])\n",
    "    update_ghost_cells(intermediate)\n",
    "    \n",
    "    buffer = right_hand_side(intermediate)\n",
    "    intermediate[:, to_update_slice] = rk3(3, q[i-1, :, to_update_slice], buffer, dt, intermediate[:, to_update_slice])\n",
    "    update_ghost_cells(intermediate)\n",
    "    \n",
    "    q[i] = intermediate\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c8b60641-2ae6-4ccb-9c2e-9002d3b45c17",
   "metadata": {},
   "source": [
    "### Note that $\\rho e$ are plotted, not $e$\n",
    "\n",
    "### Pressure profile in his paper is wrong. He forgot multiplying $0.5$ for kinetic energy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "97088a48-5207-42dc-a92c-f8429f11cea2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1000x800 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,8), dpi=100)\n",
    "states = (r\"$\\rho$\", r\"$u$\", r\"$\\rho e$\", r\"$p$\")\n",
    "profiles = (back_to_primitive(q[-1], Primitive.rho), back_to_primitive(q[-1], Primitive.u), q[-1, Conservative.energy.value], back_to_primitive(q[-1], Primitive.p))\n",
    "for i, (state, profile) in enumerate(zip(states, profiles)):\n",
    "    plt.subplot(2, 2, i+1)\n",
    "    plt.plot(x, profile, linewidth=1)\n",
    "    plt.xlabel(\"$x$\")\n",
    "    plt.ylabel(state)\n",
    "plt.tight_layout()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "gpytorch",
   "language": "python",
   "name": "gpytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
